/*
 *数据库方法类：连接数据库，登录，注册，修改，删除
 * 1.连接数据库：SqlConnectClient
 *
 *
 *
**/
#ifndef SYSDBA_H
#define SYSDBA_H

#include <QSqlError>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlTableModel>
#include <QSqlQueryModel>
#include <QTableWidget>
#include <QString>
#include <QStringList>
struct TypeAdmin {
    QString AdminId;
    QString PassWd;
    QString Name;
    QString Sex;
    int Age;
    QString IdNumber;
    QString Tel;
    QString WorkDate;
    int Power;
};//管理员信息数据类型

struct RegInfo{
    QString stuId;
    QString StuName;
    QString seatId;
    QString StuSex;
    bool Status;
    QString StatusInfo;
};//登记完成反馈登记情况

struct ExecStatus{
    QString StatusInfo;//StatusInfo返回状态具体信息
    bool Status;//执行成功，Status值为1,反之Status为0
};//SQL语句执行情况

//获取教室信息
struct ClassInfo{
    int Amount;
    int Used;
    int Empty;
};

// 注册自定义类型
Q_DECLARE_METATYPE(TypeAdmin)
Q_DECLARE_METATYPE(RegInfo)
Q_DECLARE_METATYPE(ExecStatus)
Q_DECLARE_METATYPE(ClassInfo)


class SysDBL
{
    public:
        SysDBL();

        static QSqlDatabase SqlConnectClient(); //连接数据库

        static ExecStatus Login(QString UserName,QString Passwd); //登录

        static ExecStatus AdminReg(TypeAdmin info);//注册管理员

        static ExecStatus AdminModify(TypeAdmin info);//修改信息

        static ExecStatus AdminRemove(QString ID);//删除信息

        QString getStuGrade(QString IdNumber);//通过身份证获取该学生学号，同时截取年级判断是否符合登记要求

//        static void TableWidgetView(QSqlDatabase db,QString sqlCmd,QTableWidget *TableWidget);//全表查询

        static QSqlQueryModel *QueryModelView(QWidget *parent,QString ID);//用于条件查询

        static QSqlQueryModel *QuerySeat(QWidget *parent,QString ID);

        RegInfo StuSeatReg(int classId,QString IdNum,QString Date);//在客户端根据学生情况给定教室，后台随机分配位置

        static ClassInfo getSeatNum(int ID);//传入教室ID，获取座位数

        static QStringList regInfo(QString ID);//查询已登记学生基本信息

        static ExecStatus RegRemove(QString id);//位置注销

    private:

};


#endif // SYSDBA_H
